home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_c / msqc25t1 / video.c < prev    next >
C/C++ Source or Header  |  1990-09-30  |  3KB  |  98 lines

  1. /* video.c: Displays information about video configuration */
  2. /*          Common IBM PC devices only                      */
  3.  
  4. #include <stdio.h>
  5. #include <graph.h>
  6. #include "mk_fp.h"
  7. #include "biosarea.h"
  8. #if !defined TRUE
  9. #define FALSE 0
  10. #define TRUE !FALSE
  11. #endif
  12.  
  13. main ()
  14. {
  15.     BIOSDATA far *bios = MK_FP (0x40, 0);
  16.     struct videoconfig text, grafix;
  17.     short best;
  18.  
  19.     /* Get text and general video information */
  20.     _getvideoconfig (&text);
  21.  
  22.     /* Get info about best graphics mode available */
  23.     if (text.adapter != _MDPA) {
  24.         switch (text.adapter & 0x2f) {
  25.             case _CGA   : best = _MRES4COLOR;   break;
  26.             case _EGA   : best = _ERESCOLOR;    break;
  27.             case _VGA   : best = _VRES16COLOR;  break;
  28.             case _MCGA  : best = _MRES256COLOR; break;
  29.             case _HGC   : best = _HERCMONO;     break;
  30.         }
  31.         _setvideomode (best);       /* go to best graphics mode */
  32.         _getvideoconfig (&grafix);          /* get info */
  33.         _setvideomode (_DEFAULTMODE);   /* return to text mode */
  34.     }
  35.  
  36.     /* Report video information */
  37.     puts ("Video configuration information:\n");
  38.     printf ("  General: Adapter type              %02X",text.adapter);
  39.     switch (text.adapter & 0x2f) {
  40.         case _MDPA  : puts ("(MDPA");  break;
  41.         case _CGA   : puts ("(CGA)");  break;
  42.         case _EGA   : puts ("(EGA)");  break;
  43.         case _VGA   : puts ("(VGA)");  break;
  44.         case _MCGA  : puts ("(MCGA)"); break;
  45.         case _HGC   : puts ("(HGC)");  break;
  46.         default     : puts ("(Other)"); break;
  47.     }
  48.     printf ("           Monitor type              %02X",text.monitor);
  49.     switch (text.monitor) {
  50.         case 0x0001: puts ("(MONO)");          break;
  51.         case 0x0002: puts ("(COLOR)");         break;
  52.         case 0x0004: puts ("(ENHCOLOR)");      break;
  53.         case 0x0008: puts ("(ANALOGMONO)");    break;
  54.         case 0x0010: puts ("(ANALOGCOLOR)");   break;
  55.         case 0x0018: puts ("(ANALOG)");        break;
  56.         default    : puts ("(Other)");          break;
  57.     }
  58.     printf ("           Video memory size        %3d Kbytes\n",text.memory);
  59.     printf ("           Video hardware port     %04Xh\n\n",
  60.             bios->activeDispPort);
  61.  
  62.     printf ("   Text:   Rows                     %3d\n",
  63.             text.numtextrows);
  64.     printf ("           Columns                  %3d\n",
  65.             text.numtextcols);
  66.  
  67.     printf ("           Video pages              %3d\n",
  68.             text.numvideopages);
  69.     printf ("           Normal video mode        %3d\n",
  70.             text.mode);
  71.     printf ("           Video buffer size       %4d bytes\n",
  72.             bios->vidBuffSz);
  73.     printf ("           Video memory segment    %4Xh\n\n",
  74.             text.monitor == _MONO ? 0xB000 : 0xB800);
  75.  
  76.  
  77.     if (text.adapter != _MDPA) {
  78.         printf (" Graphics: Width in pixels          %3d\n",
  79.             grafix.numxpixels);
  80.  
  81.         printf ("           Height in pixels         %3d\n",
  82.             grafix.numypixels);
  83.         printf ("           Bits per pixel           %3d\n",
  84.             grafix.bitsperpixel);
  85.         printf ("           Number of colors         %3d\n",
  86.             grafix.numcolors);
  87.         printf ("           Video pages              %3d\n",
  88.             grafix.numvideopages);
  89.         printf ("           Video buffer segment    ");
  90.         switch (text.adapter){
  91.             case _HGC   : printf ("%Xh\n", 0xB000); break;
  92.             case _CGA   : printf ("%Xh\n", 0xB800); break;
  93.             default     : printf ("%Xh\n", 0xA000); break;
  94.         };
  95.     }
  96. }
  97.  
  98.